#include "..\CookHeader.h"

typedef struct _TreeNode {
	struct _TreeNode* left = NULL;
	string data;
	struct _TreeNode* right = NULL;
} TreeNode;

void preOrder(TreeNode* node) {
	if (node == NULL)
		return;
	print(node->data + "->");
	preOrder(node->left);
	preOrder(node->right);
}

void inOrder(TreeNode* node) {
	if (node == NULL)
		return;
	inOrder(node->left);
	print(node->data + "->");
	inOrder(node->right);
}

void postOrder(TreeNode* node) {
	if (node == NULL)
		return;
	postOrder(node->left);
	postOrder(node->right);
	print(node->data + "->");
}

int main() {
	TreeNode* root;

	TreeNode* node1 = new TreeNode;
	node1->data = "ȭ";
	root = node1;

	TreeNode* node2 = new TreeNode;
	node2->data = "ֶ";
	node1->left = node2;

	TreeNode* node3 = new TreeNode;
	node3->data = "";
	node1->right = node3;

	TreeNode* node4 = new TreeNode;
	node4->data = "";
	node2->left = node4;

	TreeNode* node5 = new TreeNode;
	node5->data = "";
	node2->right = node5;

	TreeNode* node6 = new TreeNode;
	node6->data = "";
	node3->left = node6;

	TreeNode* node7 = new TreeNode;
	node7->data = "";
	node4->right = node7;

	TreeNode* node8 = new TreeNode;
	node8->data = "糪";
	node6->right = node8;

	print(" ȸ : ");
	preOrder(root);
	println("");

	print(" ȸ : ");
	inOrder(root);
	println("");

	print(" ȸ : ");
	postOrder(root);
	println("");
}